﻿using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Common;

namespace Sinacor.Service.Infra.AuthorizationService.BusinessEntity
{
    /// <summary>
    /// Entidade de negocio Policy
    /// </summary>
    public class Policy : BaseBusinessEntity
    {
        #region Campos

        /// <summary>
        /// Campo _policyId
        /// </summary>
        private System.Int32? _policyId;

        /// <summary>
        /// Campo _policyType
        /// </summary>
        private Enum.PolicyType? _policyType;

        /// <summary>
        /// Campo _policyStatus
        /// </summary>
        private Enum.PolicyStatus? _policyStatus;

        /// <summary>
        /// Campo _policyName
        /// </summary>
        private System.String _policyName;


        /// <summary>
        /// Campo _isEditable
        /// </summary>
        private System.Boolean? _isEditable;

        /// <summary>
        /// Campo _isVisible
        /// </summary>
        private System.Boolean? _isVisible;
        #endregion

        #region Propriedades

        /// <summary>
        /// Propriedade PolicyId
        /// </summary>
        [NotNull(918, RuleSetConstants.UPDATE)]
        [NotNull(919, RuleSetConstants.DELETE)]
        [NotNull(920, RuleSetConstants.SELECTONE)]
        public System.Int32? PolicyId
        {
            get { return this._policyId; }
            set { this._policyId = value; }
        }

        /// <summary>
        /// Propriedade PolicyType
        /// </summary>
        [NotNull(921, RuleSetConstants.INSERT)]
        [NotNull(922, RuleSetConstants.UPDATE)]
        public Enum.PolicyType? PolicyType
        {
            get { return this._policyType; }
            set { this._policyType = value; }
        }

        /// <summary>
        /// Propriedade PolicyStatus
        /// </summary>
        [NotNull(923, RuleSetConstants.INSERT)]
        [NotNull(924, RuleSetConstants.UPDATE)]
        public Enum.PolicyStatus? PolicyStatus
        {
            get { return this._policyStatus; }
            set { this._policyStatus = value; }
        }

        /// <summary>
        /// Propriedade PolicyName
        /// </summary>
        [NotNull(925, RuleSetConstants.INSERT)]
        [NotEmpty(926, RuleSetConstants.INSERT, true)]
        [NotNull(927, RuleSetConstants.UPDATE)]
        [NotEmpty(928, RuleSetConstants.UPDATE, true)]
        public System.String PolicyName
        {
            get { return this._policyName; }
            set { this._policyName = value; }
        }


        /// <summary>
        /// Propriedade IsEditable
        /// </summary>
        public System.Boolean? IsEditable
        {
            get { return this._isEditable; }
            set { this._isEditable = value; }
        }

        /// <summary>
        /// Propriedade IsVisible
        /// </summary>
        public System.Boolean? IsVisible
        {
            get { return this._isVisible; }
            set { this._isVisible = value; }
        }
        #endregion

        #region Construtores

        /// <summary>
        /// Construtor Policy
        /// </summary>
        public Policy()
        {

        }

        #endregion
    }
}

